package com.whfc.safety.service;

import com.whfc.common.exception.BizException;
import com.whfc.common.result.PageData;
import com.whfc.safety.param.SafetyIssueAddParam;
import com.whfc.safety.dto.SafetyIssueDTO;
import com.whfc.safety.dto.SafetyIssueTypeDTO;
import com.whfc.safety.param.SafetyIssueEditParam;
import com.whfc.safety.param.SafetyIssueTypeAddParam;
import com.whfc.safety.param.SafetyIssueTypeEditParam;

import java.util.List;

/**
 * @ClasssName SafetyIssueService
 * @Description 安全问题类型/明细接口类
 * @Author hw
 * @Date 2020/8/5 14:12
 * @Version 1.0
 */
public interface SafetyIssueService {

    /**
     * 获取安全问题类型列表
     *
     * @param deptId  组织机构ID
     * @param keyword 搜索关键字
     * @return 安全问题类型列表
     * @throws BizException 业务异常
     */
    List<SafetyIssueTypeDTO> issueTypeList(Integer deptId, String keyword) throws BizException;


    /**
     * 新增安全问题类型
     *
     * @param addParam 新增安全问题请求类
     * @throws BizException 业务异常
     */
    void addIssueType(SafetyIssueTypeAddParam addParam) throws BizException;

    /**
     * 编辑安全问题类型
     *
     * @param editParam 安全问题类型ID
     * @throws BizException 业务异常
     */
    void editIssueType(SafetyIssueTypeEditParam editParam) throws BizException;

    /**
     * 删除安全问题类型
     *
     * @param issueTypeId 安全问题类型ID
     * @throws BizException 业务异常
     */
    void delIssueType(Long issueTypeId) throws BizException;


    /**
     * 获取安全问题列表  (不分页)
     *
     * @param issueTypeId 问题内别主键
     * @return 安全问题列表
     * @throws BizException 业务异常
     */
    List<SafetyIssueDTO> issueList(Long issueTypeId) throws BizException;

    /**
     * 获取安全问题列表  （分页）
     *
     * @param issueTypeId 问题内别主键
     * @param pageNum     页码
     * @param pageSize    每页数量
     * @return 安全问题列表
     * @throws BizException 业务异常
     */
    PageData<SafetyIssueDTO> issueList(Long issueTypeId, Integer pageNum, Integer pageSize) throws BizException;

    /**
     * 获取安全问题历史列表
     *
     * @param deptId
     * @param pageSize
     * @return
     * @throws BizException
     */
    List<SafetyIssueDTO> issueHistoryList(Integer deptId, Integer pageSize) throws BizException;

    /**
     * 新增安全问题
     *
     * @param addParam 组织机构ID
     * @throws BizException 业务异常
     */
    void addIssue(SafetyIssueAddParam addParam) throws BizException;

    /**
     * 编辑安全问题明细
     *
     * @param editParam 修改安全问题明细请求类
     * @throws BizException 业务异常
     */
    void editIssue(SafetyIssueEditParam editParam) throws BizException;

    /**
     * 删除安全问题明细
     *
     * @param issueId 安全问题ID
     * @throws BizException 业务异常
     */
    void delIssue(Long issueId) throws BizException;

    /**
     * 禁用/启用安全问题明细
     *
     * @param issueId 问题明细表主键
     * @param enable  是否启用0-禁用  1-启用
     * @return
     * @author hw
     * @date 2020/8/4 16:38
     **/
    void disableOrEnabledIssue(Long issueId, Integer enable);

    /**
     * 获取使用组织机构ID查询质量问题列表
     *
     * @param deptId 组织机构ID
     * @return 质量问题列表
     * @throws BizException 业务异常
     */
    List<SafetyIssueDTO> issueList(Integer deptId) throws BizException;

    void deleteBatch(List<Integer> idList);
}
